package com.zdkj.subway.stm.entity;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zdkj.common.core.entity.BaseEntity;
import com.zdkj.subway.stm.util.CardTypeConverter;
import com.zdkj.subway.stm.util.CardTypeParamConverter;
import com.zdkj.subway.stm.util.LineCodeConverter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 站间调票(线网)
 *
 * @author zdkj code generator
 * @date 2020-05-25 10:42:55
 */
@Data
@TableName("sw_st_cycle")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "站间调票")
public class SwStCycle extends BaseEntity<SwStCycle> {
    private static final long serialVersionUID = 1L;

    /**
     * 唯一标识
     */
    @TableId
    @ApiModelProperty(value = "唯一标识")
    @ExcelIgnore
    private Integer id;
    /**
     * 调出线路
     */
    @ApiModelProperty(value = "调出线路")
    @ExcelProperty(value = "申请线路")
    private String outLineCode;
    /**
     * 调出站点
     */
    @ApiModelProperty(value = "调出站点")
    @ExcelProperty(value = "调出站点")
    private String outStationCode;
    /**
     * 调出时间
     */
    @ApiModelProperty(value = "调出时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "调出时间")
    private LocalDateTime outTime;
    /**
     * 申请表id用来自动确认接收更改状态
     */
    @ApiModelProperty(value = "申请表id用来自动确认接收更改状态")
    @ExcelIgnore
    private Integer applyId;
    /**
     * 流水号
     */
    @ApiModelProperty(value = "流水号")
    @ExcelProperty(value = "流水号")
    private String orderNum;
    /**
     * 调入站点
     */
    @ApiModelProperty(value = "调入站点")
    @ExcelProperty(value = "调入站点")
    private String inStationCode;
    /**
     * 调入时间
     */
    @ApiModelProperty(value = "调入时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "调入时间")
    private LocalDateTime inTime;
    /**
     * 接收数量
     */
    @ApiModelProperty(value = "接收数量")
    @ExcelProperty(value = "接收数量")
    private Integer inNumber;
    /**
     * 差异数量
     */
    @ApiModelProperty(value = "差异数量")
    @ExcelProperty(value = "差异数量")
    private Integer diffNumber;
    /**
     * 调出站调出数量
     */
    @ApiModelProperty(value = "调出站调出数量")
    @ExcelProperty(value = "调出站调出数量")
    private Integer outToNumber;
    /**
     * 接收人
     */
    @ApiModelProperty(value = "接收人")
    @ExcelProperty(value = "接收人")
    private String inPerson;
    /**
     * 接收人工号
     */
    @ApiModelProperty(value = "接收人工号")
    @ExcelProperty(value = "接收人工号")
    private String inPersonCode;
    /**
     * 操作人
     */
    @ApiModelProperty(value = "操作人")
    @ExcelProperty(value = "操作人")
    private String makePerson;
    /**
     * 操作人工号
     */
    @ApiModelProperty(value = "操作人工号")
    @ExcelProperty(value = "操作人工号")
    private String makePersonCode;
    /**
     * 操作时间
     */
    @ApiModelProperty(value = "操作时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty(value = "操作时间")
    private LocalDateTime makeTime;

    /**
     * 前端显隐字段
     */
    @ApiModelProperty(value = "前端显隐字段")
    @ExcelIgnore
    private String isVisible;
    /**
     * 申诉状态
     */
    @ApiModelProperty(value = "申诉状态")
    @ExcelProperty(value = "申诉状态")
    private String applyStatus;
    /**
     * 申诉原因
     */
    @ApiModelProperty(value = "申诉原因")
    @ExcelProperty(value = "申诉原因")
    private String applyCase;
    /**
     * 反馈信息
     */
    @ApiModelProperty(value = "反馈信息")
    @ExcelProperty(value = "反馈信息")
    private String backMessage;
    /**
     * 通知状态 0 未通知 1 已通知
     */
    @ApiModelProperty(value = "通知状态 0 未通知 1 已通知")
    @ExcelIgnore
    private String noticeStatus;
    /**
     * 调出确认通知状态 0 未确认 1已确认
     */
    @ApiModelProperty(value = "调出确认通知状态 0 未确认 1已确认")
    @ExcelIgnore
    private String isConfirmOut;
    /**
     * 调入确认通知状态 0 未确认 1已确认
     */
    @ApiModelProperty(value = "调入确认通知状态 0 未确认 1已确认")
    @ExcelIgnore
    private String isConfirmIn;

    /**
     * 办理状态 0未完成 1待接收 2已完成
     */
    @ApiModelProperty(value = "办理状态 0未完成 1待接收 2已完成")
    @ExcelIgnore
    private String handleStatus;
    /**
     * 调出完成 0未完成 1已完成
     */
    @ApiModelProperty(value = "调出完成 0未完成 1已完成")
    @ExcelIgnore
    private String isOut;
    /**
     * 接收完成 0未完成 1已完成
     */
    @ApiModelProperty(value = "接收完成 0未完成 1已完成")
    @ExcelIgnore
    private String isIn;
    /**
     * 调票原因
     */
    @ApiModelProperty(value = "调票原因")
    @ExcelProperty(value = "调票原因")
    private String cycleCase;

	/**
     * 特殊工作卡卡号
     */
    @ApiModelProperty(value = "特殊工作卡卡号")
    @ExcelProperty(value = "特殊工作卡卡号")
    private String specialCardNo;
    /**
     * 票种
     */
    @ApiModelProperty(value = "票种CODE")
    @ExcelProperty(value = "票种", converter = CardTypeConverter.class)
    private String cardType;
    /**
     * 车票名称
     */
    @ApiModelProperty(value = "车票CODE")
    @ExcelProperty(value = "车票名称", converter = CardTypeParamConverter.class)
    private String cardTypeParam;
    /**
     * 金额（元）
     */
    @ApiModelProperty(value = "金额（元）")
    @ExcelProperty(value = "金额（元）")
    private BigDecimal money;
    /**
     * 调出数量
     */
    @ApiModelProperty(value = "调出数量")
    @ExcelProperty(value = "调出数量")
    private Integer outNumber;
    /**
     * 次数
     */
    @ApiModelProperty(value = "次数")
    @ExcelProperty(value = "次数")
    private Integer amount;
    /**
     * 调出人
     */
    @ApiModelProperty(value = "调出人")
    @ExcelProperty(value = "调出人")
    private String outPerson;
    /**
     * 调入线路
     */
    @ApiModelProperty(value = "调入线路")
    @ExcelProperty(value = "调入线路")
    private String inLineCode;
    /**
     * 调出人工号
     */
    @ApiModelProperty(value = "调出人工号")
    @ExcelProperty(value = "调出人工号")
    private String outPersonCode;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @ExcelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "调出时间 yyyy-MM-dd")
    @ExcelIgnore
    @TableField(exist = false)
    private String outTimeDTO;

    @TableField(exist = false)
    @ApiModelProperty(value = "特殊工作卡卡号搜索")
    private String specialCardNoSearch;

}
